package com.test.consumer.server;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class HelloService {
    @Autowired
    RestTemplate restTemplate;

    /**
     * @HystrixCommand 表示熔断器，一般服务生产者无法响应时，服务调用者会自调用 fallbackMethod
     * 中的方法并返回，如下方法 hiError
     * @param name
     * @return
     */
    @HystrixCommand(fallbackMethod="hiError")
    public String hiService(String name)
    {
        //参数里url中的"PRODUCT-SERVICE"就是服务生产者的应用名，配制在application.yml中，
        // 如 spring:application:name: product-service，这个名称与生产者的服务端口无关
        return restTemplate.getForObject("http://PRODUCT-SERVICE/service/hi?name=" + name, String.class);
    }

    public String hiError(String name){

        return "this is happend error==name :" + name;
    }

}
